char* Ptr2Str(_ptr,_str)
char* _ptr;
char* _str;
{
	return _ptr ? _ptr : (_str ? _str : "");
}



trouble(_text1,_text2)
char *_text1;
char *_text2;
{
	/*
		if (errno) perror("CRT error:");
	*/
	
 	printf	( "\nError: %s %s"
		, Ptr2Str(_text1,"unknown")
		, Ptr2Str(_text2,0)
		);
	puts("\007");
	exit(1);
}



int	ArgInt(_value, _min, _max, _name)
char*	_value;
int	_min;
int	_max;
char*	_name;	/* parameter name */
{
	int	result;
	char	text[0xFF];

	if (_max < _min)
	{
		result	= _min;
		_min	= _max;
		_max	= result;
	}

	result = atoi(_value);

	if (result < _min || result > _max)
	{
		sprintf	( text
			, "parameter %s = %d is out of [%d,%d] range"
			, _name
			, result
			, _min
			, _max
			);
		trouble (text,0);
	}
	return result;
}
